package cn.edu.wynu.api.generics;

import cn.edu.wynu.api.stringapi.StringBuilderLearn;

import java.util.ArrayList;

public class GenericsLearn {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("Hello");
        // 缺点1：获取到Object，必须强制转型为String，很麻烦
        Object o = list.get(0);
        String s = (String)list.get(0);

        // 缺点2：很容易出现ClassCastException，因为容易“误转型”：
        list.add(new Integer(123));
        // ERROR: ClassCastException:
        // String second = (String) list.get(1);

        // 为解决上述两个缺点，在jdk 1.5版本以后引入泛型机制，一开始创建集合时，就指定集合中存放的类型：
        ArrayList<String> list2 = new ArrayList<String>();
        list2.add("Hello");
        String s1 = list2.get(0);
        // ERROR: 编译错误：list2.add(3);
    }
}
